RadSpreadStreamProcessing Export
The GridViewSpreadStreamExport uses the RadSpreadStreamProcessing library which allows you to create big documents (without loading the entire document in the memory) and export them to the most common formats.
The spread export functionality is located in the TelerikExport.dll assembly. You need to include the following namespace in order to access the types contained in TelerikExport:
- Telerik.WinControls.Export
Since this functionality is using the RadSpreadStreamProcessing library you need to reference the following assembly as well:
- Telerik.Documents.SpreadsheetStreaming
The TelerikExport.dll must be the same version as the rest of the Assemblies.
<Progress installation folder>\Bin
folder holds the assemblies targetting .NET 2.0, while the ones in<Progress installation folder>\Bin40
are for .NET 4.0.
Exporting
To use the spread export functionality create an instance of the GridViewSpreadStreamExport object. Pass as a parameter the RadGridView instance to export. Afterward, the RunExport method will trigger the export process. The latter method accepts as a parameter the filename of the file to be exported and a SpreadStreamExportRenderer instance.
Exporting the grid.
GridViewSpreadStreamExport spreadStreamExport = new GridViewSpreadStreamExport(this.radGridView1);
spreadStreamExport.ExportVisualSettings = true;
spreadStreamExport.RunExport(@"D:\StreamExport.xlsx", new SpreadStreamExportRenderer());
Dim spreadStreamExport As New GridViewSpreadStreamExport(Me.radGridView1)
spreadStreamExport.ExportVisualSettings = True
spreadStreamExport.RunExport("D:\StreamExport.xlsx", New SpreadStreamExportRenderer())
Properties
Property | Description |
---|---|
ExportHierarchy | Set it to true if you want to export the child templates/rows. |
ExportVisualSettings | Gets or sets a value indicating whether the visual settings should be exported. |
SheetName | Gets or sets the name of the sheet. |
SheetMaxRows | Gets or sets the maximum number of rows per sheet. |
SummariesExportOption | Gets or sets a value indicating how summary rows are exported. |
HiddenColumnOption | Gets or sets a value indicating how hidden columns are exported. |
HiddenRowOption | Gets or sets a value indicating how hidden rows are exported. |
PagingExportOption | Gets or sets a value indicating how the export behaves when paging is enabled. |
ChildViewExportMode | Defines which child view of a hierarchy row to be exported. Available modes are: - ExportFirstView: The exporter exports the first view. - ExportCurrentlyActiveView: The exporter exports the view that is actived in the grid. - SelectViewToExport: In this mode the ChildViewExporing event is fired. The event allows to choose the view to export in row by row basis. - ExportAllViews: In this mode all child views are exported. Available in GridViewSpreadExport and GridViewPdfExport. |
RadGridViewToExport | Gets or sets the RadGridView to export. |
ExportFormat | Gets or sets the format of the exported file - XLSX or CSV. |
ExportGroupedColumns | Gets or sets a value indicating whether to export grouped columns. |
FreezeHeaderRow | Gets or sets a value indicating whether to freeze the header row in the exported file. |
FreezePinnedRows | Gets or sets a value indicating whether to freeze pinned rows. |
FreezePinnedColumns | Gets or sets a value indicating whether to freeze pinned columns. |
ExportChildRowsGrouped | Gets or sets a value indicating whether to export hierarchy and group child rows grouped. |
ExportViewDefinition | Gets or sets a value indicating whether to export view definition |
FileExportMode | This property determines whether the data will be exported into an existing or a new file. Available options are: NewSheetInExistingFile(this option will create a new sheet in an already existing file) and CreateOrOverrideFile which creates new or overrides the existing file. |
Each column in RadGridView has ExcelExportType property which can be used for explicitly setting the data type of the cells in the exported document. In order to change the format of the exported data, you can set the ExcelExportType property of the specific column to Custom and specify the ExcelExportFormatString property with the desired format. Examples of such formats are available here: https://support.office.com/en-us/article/Format-a-date-the-way-you-want-8e10019e-d5d8-47a1-ba95-db95123d273e?ui=en-US&rs=en-US&ad=US
Events
CellFormatting
This event occurs for every cell that is being exported. It can be used for styling the cells or applying a custom format to the cells values.
Using the CellFormatting event
private void SpreadStreamExport_CellFormatting(object sender, SpreadStreamCellFormattingEventArgs e)
{
e.CellStyleInfo.BackColor = Color.Green;
e.CellStyleInfo.ForeColor = Color.Red;
e.CellStyleInfo.BottomBorder = new SpreadBorder(SpreadBorderStyle.Double, SpreadThemableColor.FromRgb(100, 100, 100));
e.CellStyleInfo.TopBorder = Color.Black;
}
Private Sub SpreadStreamExport_CellFormatting(ByVal sender As Object, ByVal e As SpreadStreamCellFormattingEventArgs)
e.CellStyleInfo.BackColor = Color.Green
e.CellStyleInfo.ForeColor = Color.Red
e.CellStyleInfo.BottomBorder = New SpreadBorder(SpreadBorderStyle.Double, SpreadThemableColor.FromRgb(100, 100, 100))
e.CellStyleInfo.TopBorder = Color.Black
End Sub
RowCreated
Occurs when a new row is created in current worksheet. This is suitable place to set any row properties (like height) and/or add indent cells.
Using RowCreated to set the rows height.
private void SpreadStreamExport_RowCreated(object sender, SpreadStreamRowEventArgs e)
{
if (e.GridRowInfoType == typeof(GridViewTableHeaderRowInfo))
{
var row = e.Row as Telerik.Documents.SpreadsheetStreaming.IRowExporter;
row.SetHeightInPixels(50);
}
}
Private Sub SpreadStreamExport_RowCreated(ByVal sender As Object, ByVal e As SpreadStreamRowEventArgs)
If e.GridRowInfoType Is GetType(GridViewTableHeaderRowInfo) Then
Dim row = TryCast(e.Row, Telerik.Documents.SpreadsheetStreaming.IRowExporter)
row.SetHeightInPixels(50)
End If
End Sub
RowExporting
Occurs before every spread row is exported. This is suitable place to add any additional cells at the end of the row.
private void SpreadStreamExport_RowExporting(object sender, SpreadStreamRowEventArgs e)
{
if (e.GridRowIndex % 2 == 0)
{
var row = e.Row as IRowExporter;
using (ICellExporter cell = row.CreateCellExporter())
{
SpreadCellFormat format = new SpreadCellFormat()
{
Fill = SpreadPatternFill.CreateSolidFill(new SpreadColor(100, 100, 100))
};
cell.SetValue("---");
format.HorizontalAlignment = SpreadHorizontalAlignment.Center;
format.VerticalAlignment = SpreadVerticalAlignment.Center;
format.LeftBorder = new SpreadBorder(SpreadBorderStyle.Double, SpreadThemableColor.FromRgb(100, 100, 100));
format.RightBorder = new SpreadBorder(SpreadBorderStyle.Double, SpreadThemableColor.FromRgb(100, 100, 100));
cell.SetFormat(format);
}
}
}
Private Sub SpreadStreamExport_RowExporting(ByVal sender As Object, ByVal e As SpreadStreamRowEventArgs)
If e.GridRowIndex Mod 2 = 0 Then
Dim row = TryCast(e.Row, IRowExporter)
Using cell As ICellExporter = row.CreateCellExporter()
Dim format As New SpreadCellFormat() With {.Fill = SpreadPatternFill.CreateSolidFill(New SpreadColor(100, 100, 100))}
cell.SetValue("---")
format.HorizontalAlignment = SpreadHorizontalAlignment.Center
format.VerticalAlignment = SpreadVerticalAlignment.Center
format.LeftBorder = New SpreadBorder(SpreadBorderStyle.Double, SpreadThemableColor.FromRgb(100, 100, 100))
format.RightBorder = New SpreadBorder(SpreadBorderStyle.Double, SpreadThemableColor.FromRgb(100, 100, 100))
cell.SetFormat(format)
End Using
End If
End Sub
ExportCompleted
Occurs when the export process completes. This event is suitable for notifying the user that the exported operation is now completed.
ChildViewExporting
Occurs when a child view will be exported. This event is suitable for checking whether a child view will be exported or not.
Asynchronous Export
This feature can be utilized by calling the RunExportAsync method on the GridViewSpreadStreamExport object. In addition there are two events that fire when this export method is used:
- AsyncExportCompleted: Fires when the export operation is completed.
- AsyncExportProgressChanged: Fires repeatedly and passes the current export progress.
When you are exporting with visual settings the UI would be friezed for some time. This is necessary because the exporter need to retrieve all grid styles and this operation is executed on the UI thread.
Exporting asynchronously and reporting the progress.
private void RadButton1_Click(object sender, EventArgs e)
{
GridViewSpreadStreamExport spreadStreamExport = new GridViewSpreadStreamExport(this.radGridView1);
spreadStreamExport.AsyncExportProgressChanged += SpreadStreamExport_AsyncExportProgressChanged;
spreadStreamExport.AsyncExportCompleted += SpreadStreamExport_AsyncExportCompleted;
spreadStreamExport.RunExportAsync(@"D:\StreamExport.xlsx", new SpreadStreamExportRenderer());
}
private void SpreadStreamExport_AsyncExportCompleted(object sender, AsyncCompletedEventArgs e)
{
RadMessageBox.Show("Export Completed");
}
private void SpreadStreamExport_AsyncExportProgressChanged(object sender, ProgressChangedEventArgs e)
{
radProgressBar1.Value1 = e.ProgressPercentage;
}
Private Sub RadButton1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim spreadStreamExport As New GridViewSpreadStreamExport(Me.radGridView1)
AddHandler spreadStreamExport.AsyncExportProgressChanged, AddressOf SpreadStreamExport_AsyncExportProgressChanged
AddHandler spreadStreamExport.AsyncExportCompleted, AddressOf SpreadStreamExport_AsyncExportCompleted
spreadStreamExport.RunExportAsync("D:\StreamExport.xlsx", New SpreadStreamExportRenderer())
End Sub
Private Sub SpreadStreamExport_AsyncExportCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
RadMessageBox.Show("Export Completed")
End Sub
Private Sub SpreadStreamExport_AsyncExportProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs)
radProgressBar1.Value1 = e.ProgressPercentage
End Sub